<?php
// update 02/06/2007
//------------------------------------------------------------------------------
// Class              : ModelBase
// Modification       :
//------------------------------------------------------------------------------
// Date(yyyy.mm.dd)   Developer                       Action
//------------------------------------------------------------------------------
// 2007.06.02         Tran Thanh                     Created
//------------------------------------------------------------------------------
//--
class MySql
{
	var $dbName = "";
	var $con    = 0;
	var $dbcon  = 0;
	var $result = 0;
	var $row    = array();
	var $maximum_time = 0;
	var $timestamp;

//==========================================================================
// Function    : MySql
// Argument    :
// ReturnValue :
// Creator     : Tran Thanh 2007.06.02
// Details     : AppendData record of table
//==========================================================================
	function MySql($dbName=''){
		 $this->dbName = $dbName;
	}
//==========================================================================
// Function    : connect
// Argument    :
// ReturnValue :
// Creator     : Tran Thanh 2007.06.02
// Details     : AppendData record of table
//==========================================================================
	function connect($dbHotName,$dbUserName,$dbPassword,$dbName=''){
		  $this->con = mysql_connect($dbHotName,$dbUserName,$dbPassword)  or  die("<br>Not connect host  :".mysql_error());
  		 if($dbName !=''){
		 	$this->dbName=$dbName;
		 	$this->dbcon = mysql_select_db($this->dbName,$this->con)  or  die("<br>Not select  Database :". $this->dbName);
		 }
		 return $this->con;
	}
//==========================================================================
// Function    : selectdb
// Argument    :
// ReturnValue :
// Creator     : Tran Thanh 2007.06.02
// Details     : AppendData record of table
//==========================================================================
	function selectdb($database=''){
		 if($database!='')$this->dbName = $database;
		 //echo $this->dbName;
		 //echo " sdasd asd sdatabase = ".$database;
		 $this->dbcon = mysql_select_db($this->dbName,$this->con)  or  die("<br>Not select  Database :". $this->dbName);
		 return $this->dbcon;
	}
//==========================================================================
// Function    : query
// Argument    :
// ReturnValue :
// Creator     : Tran Thanh 2007.06.02
// Details     : AppendData record of table
//==========================================================================
	function query($query_string){
		 $this->result = mysql_query($query_string,$this->con);// or die("Khong thuc hien duoc query :". $query_string);
		 return $this->result;
	}
	function fetch_array(){
			 $row = mysql_fetch_array($this->result);
			 return $row;
	}
	
	function insert_id(){
			 return  mysql_insert_id();
	}
//==========================================================================
// Function    : num_rows
// Argument    :
// ReturnValue :
// Creator     : Tran Thanh 2007.06.02
// Details     : AppendData record of table
//==========================================================================
	function num_rows(){
			 return ((int)mysql_num_rows($this->result));
	}
	function getFirstRecord($sql){
		$result = mysql_query($sql,$this->con);
		$row = mysql_fetch_array($result);
		mysql_free_result($result);
		return $row ;
	}
//==========================================================================
// Function    : retrieve
// Argument    :
// ReturnValue :
// Creator     : Tran Thanh 2007.06.02
// Details     : AppendData record of table
//==========================================================================
	function retrieve($sql){
		$arrayData =  array();
		$result = mysql_query($sql,$this->con);

		while($row = mysql_fetch_array($result)){
			$arrayData[] = $row;
		}
		mysql_free_result($result);
		return $arrayData ;

	}
//==========================================================================
// Function    : errno
// Argument    :
// ReturnValue :
// Creator     : Tran Thanh 2007.06.02
// Details     : AppendData record of table
//==========================================================================
	function errno(){
		if($this->con)	return mysql_errno($this->con);
		return -1; // connec khong ton tai
	}
//==========================================================================
// Function    : error
// Argument    :
// ReturnValue :
// Creator     : Tran Thanh 2007.06.02
// Details     : AppendData record of table
//==========================================================================
	function error(){
		if($this->con)	return mysql_error($this->con);
		return 'No connection'; // connec khong ton tai
	}
//==========================================================================
// Function    : echoError
// Argument    :
// ReturnValue :
// Creator     : Tran Thanh 2007.06.02
// Details     : AppendData record of table
//==========================================================================
	function echoError($echo = false){
		if( ! mysql_errno()) return false;
		$str = ' <br>Connect id : '.$this->con. '<br> Error no : '.mysql_errno().'<br> Error detail :'.mysql_error();
		if(!$echo)return $str;
		echo $str;
	}
//==========================================================================
// Function    : fetch_tables_name
// Argument    :
// ReturnValue :
// Creator     : Tran Thanh 2007.06.02
// Details     : AppendData record of table
//==========================================================================
	function fetch_tables_name(){
		if ($this->dbName!=""){
			$tables = mysql_list_tables($this->dbName);
			$count = 0;
			while (list($table_name) = mysql_fetch_array($tables))
                	{
                   		$this->row[$count] = $table_name;
                   		$count++;
                	}
		}
		return $this->row;
	}
//==========================================================================
// Function    : backup_tables
// Argument    :
// ReturnValue :
// Creator     : Tran Thanh 2007.06.02
// Details     : AppendData record of table
//==========================================================================
	function backup_tables($table_name="",$start=0){
		$dump = '';
		$this->timestamp=time();
		if ($table_name!=""){
		    if (!$start){
			$field_row=array();
			$tmp = mysql_query('SHOW FIELDS FROM '.$table_name);
			while ($field = mysql_fetch_assoc($tmp)){
				if (!$field['Null']){
					$null = ' NOT NULL ';
				} else {$null='';}
				if ($field['Default']){
					$null .= ' DEFAULT "'.$field['Default'].'"';
				}
				if ($field['Extra']){
					$field['Extra']=' '.$field['Extra'];
				}
				$field_row[] = '  ' . $field['Field'] . ' ' . $field['Type'] . $null . $field['Extra'];
			}
			$tmp = mysql_query('SHOW KEYS FROM '.$table_name);

			while ($key = mysql_fetch_assoc($tmp))
				{
					if ($key['Key_name'] == 'PRIMARY')
					{
						$primary_key = $key['Column_name'];
					}
					else
					{
						$unique[ $key['Key_name'] ][] = $key['Column_name'];
					}
				}
			if (isset($primary_key)){
                	$field_row[] = '  PRIMARY KEY (' . $primary_key . ')';
	                }
	                if (isset($unique))
            		{
		                foreach ($unique as $name => $keys)
                  		{
		                    $field_row[] = '  UNIQUE ' . $name . ' (' . implode(',',$keys) . ')';
                		}
            		}
	  	        	$dump .= "\n\n--\n";
	                $dump .= "-- Table structure for table '$table_name'\n";
	                $dump .= "--\n\n";
        	        $dump .= "CREATE OR REPLACE TABLE $table_name (\n";
           	        $dump .= implode(",\n",$field_row);
	                $dump .= "\n);\n\n";
	                $dump .= "\n\n--\n";
		    }
			$done = 0;
			$tmp = mysql_query('SELECT * FROM '.$table_name.' LIMIT '.$start.',-1');
        		while ($row = mysql_fetch_row($tmp))
        		{
					if ($this->timeout())
					{
					return array($dump,$done);
					}
					$done++;
					foreach ($row as $id => $value)
					{
						$value = str_replace('"','\\"',$value);
						$row[$id] = '"'.$value.'"';
				}
        			$dump .= 'INSERT INTO ' . $table_name . ' VALUES (' . implode(',',$row) . ");\n";
        		}
			}
		return $dump;
	}
//==========================================================================
// Function    : check_exist
// Argument    :
// ReturnValue :
// Creator     : Tran Thanh 2007.06.02
// Details     : AppendData record of table
//==========================================================================
	function check_exist($fromtable,$checkname,$checkvalue){
			 $sql_query = "SELECT $checkname FROM $fromtable WHERE $checkname='". $checkvalue ."'";
			 $this->query($sql_query);
			 if ( $this->num_rows()>0 ) return 1;
			 return 0;
	}
//==========================================================================
// Function    : close()
// Argument    :
// ReturnValue :
// Creator     : Tran Thanh 2007.06.02
// Details     : AppendData record of table
//==========================================================================
	function close(){
			 return mysql_close($this->con);
	}
//==========================================================================
// Function    : timeout()
// Argument    :
// ReturnValue :
// Creator     : Tran Thanh 2007.06.02
// Details     : AppendData record of table
//==========================================================================
	function timeout(){
		if (!$this->maximum_time){
        	return false;
		}
		elseif ((time() - $this->timestamp) > ($this->maximum_time - 5))
		{
			return true;
		}
		else
		{
			return false;
		}
	}
}
?>